/* eslint-disable */
import axios from 'axios'
import qs from 'qs'
import common from '../common/common'
import { Dialog } from 'vant';
/**
* 定义请求常量
* TIME_OUT、ERR_SUCCESS
*/
export const TIME_OUT = 15000;    // 请求超时时间
export const ERR_SUCCESS = 0;      // 请求成功返回状态
export const ERR_ERROR = 1;      // 请求成功返回失败状态
export const ERR_LOGIN = 1001;      // 请求成功返回token失效状态
export const ERR_LOGINNULL = 1002;      // 请求成功返回token为空

//let baseUrl = ''  //正式
if (process.env.NODE_ENV === 'development') {
  baseUrl = 'http://192.168.1.104:8088/data'
}
export const APIURL=baseUrl;

// 请求超时时间
axios.defaults.timeout = TIME_OUT  

// 封装请求拦截
axios.interceptors.request.use(
	config => {
    let data=config.data;
    let token = common.getStorage('token')   // 获取token
    common.loading('请稍等...')
		//config.headers['Content-Type'] = 'application/x-www=form-urlencoded;charset=UTF-8'
    if(token != null){                          // 如果token不为null，否则传token给后台
      if(typeof data=='object'){
        data.append('user_token', token)
      }else{
        data+=`&user_token=${token}`
      }
			config.data = data
		}
		return config
	},
	error => {
		return Promise.reject(error)
	}
)

// 封装响应拦截，判断token是否过期
axios.interceptors.response.use(
  response => {
    let {data} = response
    let os = common.getUrl('os')
    common.loadingClear();
    if (data.errno === ERR_SUCCESS) {    // 如果后台返回的0表示数据正确
      console.info('服务器返回正确的数据：')
      console.info(response.data.data)
      return Promise.resolve(response.data.data)
    } else if( data.errno === ERR_LOGIN || data.errno === ERR_LOGINNULL) {
      common.removeStorage('token')          // token过期，移除token
      Dialog.alert({message:'登录失效，重新登录'}).then(action => {
        if (os === 'iPhone') {
          window.webkit.messageHandlers.tokenInvalid.postMessage('此时不走更待何时')
        } else if (os === 'android') {
          window.android.tokenInvalid()
        } else {
          let path=window.location.hash.substr(1)
          common.setStorage('fullPath', path)
          common.toLogin()
        }
      });
      return false;
    }else{
      common.toast(data.data.msg);
      return false;
    }
  },
  error => {
    common.loadingClear();
    common.toast('服务器返回错误');
    return Promise.reject(error)
  }
)

// 封装普通请求
export function fetch(requestUrl,method, params = '') {
  let json = {
    url: requestUrl,
    method: method,
  }
  if(method==='get') {
    json.params=params
  }else if(method==='post'){
    json.data=qs.stringify(params)
  }
  return axios(json)
}

// 封装上传请求
export function fetchImg(requestUrl, params = '') {
  return axios({
    url: requestUrl,
    method: 'post',
    data: params
  })
}

